//有关数据字典的工具类
import {getDicts} from "@/api/system/dict/data";


export class DictUtils{
  /**
   * 获取并设置数据字典的值
   * @param dicType 数据字典名称
   * @param context 上下文,通常为 this
   * @param property 属性,通常为vue的data属性
   * @returns {Promise<void>}
   */
  static async getAndSetDictData(dicType,context,property){
    try {
      let {code,data,msg} = await getDicts(dicType)
      if (code === 200){
        //数据处理过滤一下
        context[property] = data
          .filter(t=>t.status==="0")
          .map(t=>({dictLabel: t.dictLabel, dictValue: t.dictValue}))
      }else{
        throw Error(msg)
      }
      // console.log("res", context[property])
    } catch (e) {
      console.log(`获取数据字典${dicType}失败,异常为->${e}`)
    }
  }

  /**
   * 获取指定的数据字典
   * @param dicType
   * @returns {Promise<*>}
   */
  static async getDictData(dicType){
    try {
      let {code,data,msg} = await getDicts(dicType)
      if (code === 200){
        //数据处理过滤一下
        return data
          .filter(t=>t.status==="0")
          .map(t=>({dictLabel: t.dictLabel, dictValue: t.dictValue}))
      }else{
        throw Error(msg)
      }
      // console.log("res", context[property])
    } catch (e) {
      console.log(`获取数据字典${dicType}失败,异常为->${e}`)
    }
  }
  /**
   * 获取数据字典value值
   * @param dicType 数据字典名称
   * @param dicLabel
   * @returns {Promise<void>}
   */
  static async  getDicValue(dicType,dicLabel){
    try {
      let list = await this.getDictData(dicType)
      let find = list.find(t => t.dictLabel === dicLabel)
      if (find){
        return find.dictValue
      }
      return null
    } catch (e) {
      console.log("获取数据字典value值异常",e)
    }
  }
}
